package com.attendcollatesys.entity;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.attendcollatesys.util.ExcelDateConvertUtil;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * 月度考勤汇总表
 */

//@Data
//@Accessors(chain = true)
@ExcelIgnoreUnannotated
public class AtMonthTotalsPO {
    /** 流水号 RTX账号＋年月*/
    private String serialNo;

    /** 考勤年月 */
    @ExcelProperty(index = 0,converter = ExcelDateConvertUtil.DateConverterYM.class)
    private Date attendanceDate;

    /** 标准工作日 */
    @ExcelProperty(index = 1)
    private String workDay;

    /** 科管ID */
    @ExcelProperty(index = 2)
    private String SectionMID;

    /** 姓名 */
    @ExcelProperty(index = 3)
    private String name;

    /** RTX账号 */
    @ExcelProperty(index = 4)
    private String rtxNumber;

    /** 打卡天数 */
    @ExcelProperty(index = 5)
    private String clockDay;

    /** 打卡日应出勤工时 */
    @ExcelProperty(index = 6)
    private String expectedWorkHours;

    /** 月度缺勤扣除工时 */
    @ExcelProperty(index = 7)
    private String absenceWorkHours;

    /** 月度旷工额外扣除工时 */
    @ExcelProperty(index = 8)
    private String absentWVorkHours;

    /** 月度迟到早退次数 */
    @ExcelProperty(index = 9)
    private String lateTimes;

    /** 月度迟到早退扣除工时 */
    @ExcelProperty(index = 10)
    private String lateWorkHours;

    /** 迟到早退扣除工时_Extra */
    @ExcelProperty(index = 11)
    private String lateWorkHours2;

    /** 月度加班工时 */
    @ExcelProperty(index = 12)
    private String overtimeWorkHours;

    /** 计考勤工时 */
    @ExcelProperty(index = 13)
    private String attendanceHours;

    /** 计考勤人天 */
    @ExcelProperty(index = 14)
    private String attendanceDays;

    /** 计考勤人月 */
    @ExcelProperty(index = 15)
    private String attendanceMonth;

    public AtMonthTotalsPO() {
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        AtMonthTotalsPO that = (AtMonthTotalsPO) o;

        if (serialNo != null ? !serialNo.equals(that.serialNo) : that.serialNo != null) return false;
        if (attendanceDate != null ? !attendanceDate.equals(that.attendanceDate) : that.attendanceDate != null)
            return false;
        if (workDay != null ? !workDay.equals(that.workDay) : that.workDay != null) return false;
        if (SectionMID != null ? !SectionMID.equals(that.SectionMID) : that.SectionMID != null) return false;
        if (name != null ? !name.equals(that.name) : that.name != null) return false;
        if (rtxNumber != null ? !rtxNumber.equals(that.rtxNumber) : that.rtxNumber != null) return false;
        if (clockDay != null ? !clockDay.equals(that.clockDay) : that.clockDay != null) return false;
        if (expectedWorkHours != null ? !expectedWorkHours.equals(that.expectedWorkHours) : that.expectedWorkHours != null)
            return false;
        if (absenceWorkHours != null ? !absenceWorkHours.equals(that.absenceWorkHours) : that.absenceWorkHours != null)
            return false;
        if (absentWVorkHours != null ? !absentWVorkHours.equals(that.absentWVorkHours) : that.absentWVorkHours != null)
            return false;
        if (lateTimes != null ? !lateTimes.equals(that.lateTimes) : that.lateTimes != null) return false;
        if (lateWorkHours != null ? !lateWorkHours.equals(that.lateWorkHours) : that.lateWorkHours != null)
            return false;
        if (lateWorkHours2 != null ? !lateWorkHours2.equals(that.lateWorkHours2) : that.lateWorkHours2 != null)
            return false;
        if (overtimeWorkHours != null ? !overtimeWorkHours.equals(that.overtimeWorkHours) : that.overtimeWorkHours != null)
            return false;
        if (attendanceHours != null ? !attendanceHours.equals(that.attendanceHours) : that.attendanceHours != null)
            return false;
        if (attendanceDays != null ? !attendanceDays.equals(that.attendanceDays) : that.attendanceDays != null)
            return false;
        return attendanceMonth != null ? attendanceMonth.equals(that.attendanceMonth) : that.attendanceMonth == null;
    }

    @Override
    public int hashCode() {
        int result = serialNo != null ? serialNo.hashCode() : 0;
        result = 31 * result + (attendanceDate != null ? attendanceDate.hashCode() : 0);
        result = 31 * result + (workDay != null ? workDay.hashCode() : 0);
        result = 31 * result + (SectionMID != null ? SectionMID.hashCode() : 0);
        result = 31 * result + (name != null ? name.hashCode() : 0);
        result = 31 * result + (rtxNumber != null ? rtxNumber.hashCode() : 0);
        result = 31 * result + (clockDay != null ? clockDay.hashCode() : 0);
        result = 31 * result + (expectedWorkHours != null ? expectedWorkHours.hashCode() : 0);
        result = 31 * result + (absenceWorkHours != null ? absenceWorkHours.hashCode() : 0);
        result = 31 * result + (absentWVorkHours != null ? absentWVorkHours.hashCode() : 0);
        result = 31 * result + (lateTimes != null ? lateTimes.hashCode() : 0);
        result = 31 * result + (lateWorkHours != null ? lateWorkHours.hashCode() : 0);
        result = 31 * result + (lateWorkHours2 != null ? lateWorkHours2.hashCode() : 0);
        result = 31 * result + (overtimeWorkHours != null ? overtimeWorkHours.hashCode() : 0);
        result = 31 * result + (attendanceHours != null ? attendanceHours.hashCode() : 0);
        result = 31 * result + (attendanceDays != null ? attendanceDays.hashCode() : 0);
        result = 31 * result + (attendanceMonth != null ? attendanceMonth.hashCode() : 0);
        return result;
    }

    public AtMonthTotalsPO(String serialNo, Date attendanceDate, String workDay, String sectionMID, String name, String rtxNumber, String clockDay, String expectedWorkHours, String absenceWorkHours, String absentWVorkHours, String lateTimes, String lateWorkHours, String lateWorkHours2, String overtimeWorkHours, String attendanceHours, String attendanceDays, String attendanceMonth) {
        this.serialNo = serialNo;
        this.attendanceDate = attendanceDate;
        this.workDay = workDay;
        SectionMID = sectionMID;
        this.name = name;
        this.rtxNumber = rtxNumber;
        this.clockDay = clockDay;
        this.expectedWorkHours = expectedWorkHours;
        this.absenceWorkHours = absenceWorkHours;
        this.absentWVorkHours = absentWVorkHours;
        this.lateTimes = lateTimes;
        this.lateWorkHours = lateWorkHours;
        this.lateWorkHours2 = lateWorkHours2;
        this.overtimeWorkHours = overtimeWorkHours;
        this.attendanceHours = attendanceHours;
        this.attendanceDays = attendanceDays;
        this.attendanceMonth = attendanceMonth;
    }

    @Override
    public String toString() {
        return "AtMonthTotalsPO{" +
                "serialNo='" + serialNo + '\'' +
                ", attendanceDay=" + attendanceDate +
                ", workDay='" + workDay + '\'' +
                ", SectionMID='" + SectionMID + '\'' +
                ", name='" + name + '\'' +
                ", rtxNumber='" + rtxNumber + '\'' +
                ", clockDay='" + clockDay + '\'' +
                ", expectedWorkHours='" + expectedWorkHours + '\'' +
                ", absenceWorkHours='" + absenceWorkHours + '\'' +
                ", absentWVorkHours='" + absentWVorkHours + '\'' +
                ", lateTimes='" + lateTimes + '\'' +
                ", lateWorkHours='" + lateWorkHours + '\'' +
                ", lateWorkHours2='" + lateWorkHours2 + '\'' +
                ", overtimeWorkHours='" + overtimeWorkHours + '\'' +
                ", attendanceHours='" + attendanceHours + '\'' +
                ", attendanceDays='" + attendanceDays + '\'' +
                ", attendanceMonth='" + attendanceMonth + '\'' +
                '}';
    }

    public String getSerialNo() {
        return serialNo;
    }

    public void setSerialNo(String serialNo) {
        this.serialNo = serialNo;
    }

    public Date getAttendanceDate() {
        return attendanceDate;
    }

    public void setAttendanceDate(Date attendanceDate) {
        this.attendanceDate = attendanceDate;
    }

    public String getWorkDay() {
        return workDay;
    }

    public void setWorkDay(String workDay) {
        this.workDay = workDay;
    }

    public String getSectionMID() {
        return SectionMID;
    }

    public void setSectionMID(String sectionMID) {
        SectionMID = sectionMID;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRtxNumber() {
        return rtxNumber;
    }

    public void setRtxNumber(String rtxNumber) {
        this.rtxNumber = rtxNumber;
    }

    public String getClockDay() {
        return clockDay;
    }

    public void setClockDay(String clockDay) {
        this.clockDay = clockDay;
    }

    public String getExpectedWorkHours() {
        return expectedWorkHours;
    }

    public void setExpectedWorkHours(String expectedWorkHours) {
        this.expectedWorkHours = expectedWorkHours;
    }

    public String getAbsenceWorkHours() {
        return absenceWorkHours;
    }

    public void setAbsenceWorkHours(String absenceWorkHours) {
        this.absenceWorkHours = absenceWorkHours;
    }

    public String getAbsentWVorkHours() {
        return absentWVorkHours;
    }

    public void setAbsentWVorkHours(String absentWVorkHours) {
        this.absentWVorkHours = absentWVorkHours;
    }

    public String getLateTimes() {
        return lateTimes;
    }

    public void setLateTimes(String lateTimes) {
        this.lateTimes = lateTimes;
    }

    public String getLateWorkHours() {
        return lateWorkHours;
    }

    public void setLateWorkHours(String lateWorkHours) {
        this.lateWorkHours = lateWorkHours;
    }

    public String getLateWorkHours2() {
        return lateWorkHours2;
    }

    public void setLateWorkHours2(String lateWorkHours2) {
        this.lateWorkHours2 = lateWorkHours2;
    }

    public String getOvertimeWorkHours() {
        return overtimeWorkHours;
    }

    public void setOvertimeWorkHours(String overtimeWorkHours) {
        this.overtimeWorkHours = overtimeWorkHours;
    }

    public String getAttendanceHours() {
        return attendanceHours;
    }

    public void setAttendanceHours(String attendanceHours) {
        this.attendanceHours = attendanceHours;
    }

    public String getAttendanceDays() {
        return attendanceDays;
    }

    public void setAttendanceDays(String attendanceDays) {
        this.attendanceDays = attendanceDays;
    }

    public String getAttendanceMonth() {
        return attendanceMonth;
    }

    public void setAttendanceMonth(String attendanceMonth) {
        this.attendanceMonth = attendanceMonth;
    }
}
